//
//  YDHomeViewController.swift
//  YDWeibo01
//
//  Created by suibian on 16/8/9.
//  Copyright © 2016年 iitcast. All rights reserved.
//

import UIKit

//cell 可重用标识付

private let YDHomeViewCellID = "YDHomeViewCellID"
class YDHomeViewController: YDVistorViewController {
    // 系统刷新的控件
    let refreshControl = UIRefreshControl()
//    创建一个Viewmodel
    private lazy var statusListViewModel:YDStatusListViewModel = YDStatusListViewModel()
    override func viewDidLoad() {
        super.viewDidLoad()
        if !isLogin{
            vistorView?.setupVisitorViewInfo(nil, title: nil)
            return
        }
          setupTableViewInfo()
        loadData()
    }

//  设置tableview的相关信息
    func setupTableViewInfo(){
//    注册cell
        tableView.registerClass(YDStatusCell.self, forCellReuseIdentifier: YDHomeViewCellID)
    tableView.dataSource = self
//        设置代理
        tableView.delegate = self
//        设置cell 的高度  根据contentView的高度自动设定高度
        tableView.rowHeight = UITableViewAutomaticDimension
//    设置预估宽高 必须要设置 如果不设 就会有bug
        tableView.estimatedRowHeight = 200
//        设置中footView有菊花
        tableView.tableFooterView = activityView
//        添加菊花动画
//        activityView.startAnimating()

//        添加事件  继承自UIControl的都有此方法
        refreshControl.addTarget(self, action: "refreshAction", forControlEvents: UIControlEvents.ValueChanged)
        
        tableView.separatorStyle = .None
        tableView.addSubview(refreshControl)
        
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "reload", name: "updataReload", object: nil)
      
        
    }
     deinit{
        NSNotificationCenter.defaultCenter().removeObserver(self)
        
    }
    func reload(){
        loadData()
        self.tableView.setContentOffset(CGPoint(x: 0, y: -64), animated: true)
    
    
    }

//    
    func refreshAction(){
    loadData()
    
    }
    
//    菊花
    private lazy var activityView:UIActivityIndicatorView = {
    let view = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
        view.color = AppThemeColor

        return view
    }()


}


extension YDHomeViewController:UITableViewDataSource,UITableViewDelegate{

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusListViewModel.dataArray.count
    }
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(YDHomeViewCellID, forIndexPath: indexPath) as! YDStatusCell
        cell.backgroundColor = UIColor.whiteColor()
        cell.statusViewModel = statusListViewModel.dataArray[indexPath.row]
        return cell
    }
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        if indexPath.row + 1 == statusListViewModel.dataArray.count && !activityView.isAnimating(){
        
            //        添加菊花动画 如果选中的cell+1 == cell的总数 且没有动画 才执行动画
            activityView.startAnimating()
            print(indexPath.row)
//            请求数据
            loadData()
        }
    }


}
//extnension 中只能添加便利构造函数 和 计算性属性
extension YDHomeViewController{
    func loadData(){
    
        //        请求数据抽取 true 为上啦加载  false为下拉刷新
    
        statusListViewModel.loadData(activityView.isAnimating()) { (issuccess) -> () in
            self.endRefreshing() 
            if !issuccess{

                return
            }
            
            self.tableView.reloadData()

        }
    }

    func endRefreshing(){
    
        //            停止动画
        self.activityView.stopAnimating()
        self.refreshControl.endRefreshing()
    }
}

